Skip to content

conformance: measure the dark-factory arrangement per repo - #390

Merged
bdelanghe merged 1 commit into
mainfrom
claude/repo-health-dashboard-6n35lv
Sep 8, 2026
Merged

conformance: measure the dark-factory arrangement per repo#390
bdelanghe merged 1 commit into
mainfrom
claude/repo-health-dashboard-6n35lv

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

Closes #389.github-private#913 step 4. Steps 1–3 put the pieces in place on 37 repos; the epic asserted the arrangement, the standard now measures it.

What each row gains

dark_factory, read with the lane's own token:

field source note
required_checks GET /repos/{r}/rules/branches/{default}required_status_checks contexts public on a public repo; a failed read is a gap (rules-unreadable:<status>), never an empty gate
rulesets the ruleset ids that require them
arming_lane auto-merge.yml on the default branch, else null
legacy_arming dependabot-auto-merge.yml present reported while it exists (#929)
gate_ready standard / test and pr-claim / pr-claim required and arming lane present three observed facts, no inference

allow_auto_merge is deliberately absent: GitHub returns it only to an admin-rights caller and this lane mints nothing. It is declared and applied in infra github-admin/repositories.tf; the row does not guess.

Two new findings (the repo's, not the lane's)

  • gate-absent — a caller whose contexts nothing on the default branch requires: green decides nothing (the fail-open case #913 names).
  • arming-lane-absent — something is required, and nothing arms the merge: green waits for a person. A legacy armer does not count.

Totals gain gated / arming_lane / gate_ready; the summary table and the reader print them. rules not passed to classifyRepo (the unit surface) yields dark_factory: null rather than a default that reads as ungated.

Expected on the first run

37 gate_ready. Callers outside the 37 land in gate-absent (the step-1 rollout's remaining denominator, stated by the instrument) or, where a repo has its own gate, arming-lane-absent. .github itself: gated on schema, no arming lane → arming-lane-absent, which is true.

Tests: 31 pass (was 26) — readRules, four classifyRepo cases, totals and summary row; the sweep's fake GitHub serves branch rules. Reader and ratchet suites unchanged and green. desk's Repo health copy for the two new findings is a follow-up PR there.

🤖 Generated with Claude Code

https://claude.ai/code/session_01CAE3i1NCfwwSVYScKWvEdd


Generated by Claude Code

Step 4 of .github-private#913. Steps 1-3 put the pieces in place on 37
repos; the epic asserted the arrangement, the standard now measures it.

Per row, dark_factory: required_checks (the required_status_checks contexts
on the default branch, from GET /repos/{r}/rules/branches/{default} — public
on a public repo, so the lane's own token reads it; a failed read is a gap
with its status, never an empty gate), arming_lane (auto-merge.yml present
on the default branch), legacy_arming (dependabot-auto-merge.yml, while it
exists), and gate_ready — standard / test AND pr-claim / pr-claim required
AND the arming lane present. allow_auto_merge is deliberately not read: GitHub
returns it only to an admin-rights caller and this lane mints nothing; it is
declared and applied in infra github-admin/repositories.tf.

Two findings, the repo's: gate-absent (a caller whose contexts nothing on
the default branch requires — green decides nothing) and arming-lane-absent
(gated, and nothing arms the merge — green waits for a person). Totals gain
gated / arming_lane / gate_ready; the summary and the reader print them.

Closes #389

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CAE3i1NCfwwSVYScKWvEdd
@bdelanghe
bdelanghe requested a review from a team as a code owner September 8, 2026 18:39
@bdelanghe
bdelanghe enabled auto-merge (squash) September 8, 2026 18:39
@bdelanghe
bdelanghe merged commit 1216428 into main Sep 8, 2026
11 checks passed
@bdelanghe
bdelanghe deleted the claude/repo-health-dashboard-6n35lv branch September 8, 2026 18:40
@bounded-systems-front-desk bounded-systems-front-desk Bot moved this from Todo to Done in Front Desk Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

conformance: measure the dark-factory arrangement per repo — required checks, arming lane, gate_ready

2 participants